package com.swing.panel;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * 背景面板类，继承自JPanel
 * 专门用于显示游戏或应用程序的背景图片，支持背景图自适应面板大小
 */
public class BgPanel extends JPanel {

    // 用于存储背景图片的缓冲图像对象
    // BufferedImage支持更灵活的图像操作，适合需要频繁绘制的场景
    private BufferedImage bgImage;

    /**
     * 构造方法：初始化背景面板
     */
    public BgPanel() {
        // 设置布局管理器为BorderLayout
        // BorderLayout会让添加的组件自动填充整个面板，适合作为背景面板
        setLayout(new BorderLayout());

        // 加载背景图片
        try {
            // 从指定路径读取图片文件
            // 这里的路径是相对路径，表示项目根目录下的assets/images/bg.png
            bgImage = ImageIO.read(new File("assets/images/bg.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 重写面板的绘图方法
     * 该方法会在面板需要刷新时自动调用（如窗口大小改变、调用repaint()时）
     *
     * @param g 绘图上下文对象，用于执行绘图操作
     */
    @Override
    protected void paintComponent(Graphics g) {
        // 调用父类的paintComponent方法，确保面板正常刷新（如清除原有绘制内容）
        super.paintComponent(g);

        // 绘制背景图片
        // bgImage：要绘制的图片对象
        // 0, 0：图片在面板中的起始坐标（左上角）
        // getWidth(), getHeight()：图片要拉伸到的宽度和高度（即面板的大小）
        // this：当前面板作为图像观察者，监听图片加载状态
        if (bgImage != null) { // 确保图片加载成功后再绘制，避免空指针异常
            g.drawImage(bgImage, 0, 0, getWidth(), getHeight(), this);
        }
    }

    public void update(float deltaTime) {
    }

    public void render() {
        
    }
}
